package model.algorithm;

import java.util.Iterator;

import model.datastructure.FieldSurface2D;
import model.datastructure.ISurface;

public abstract class AbstractSurfaceIterator implements Iterator<Integer> {

	protected int index;
	protected String name;
	protected int mFieldWidth;

	/**
	 * Creates a new Iterator to iterate over the {@link FieldSurface2D}
	 * 
	 * @param fieldSurface
	 *            the surface that should be iterated over
	 * @param blockSurface
	 *            the block that is going to be placed
	 */
	public AbstractSurfaceIterator() {
		
	}

	/**
	 * Puts the iterator back in its initial condition
	 */
	public abstract void reset( FieldSurface2D fieldSurface, ISurface blockSurface , boolean isLookahead);

	@Override
	public String toString() {
		return name;
	}

	/**
	 * @return the mFieldWidth
	 */
	public int getFieldWidth() {
		return mFieldWidth;
	}
	
	public int getLookaheadBlockStepSize(){
		return (1);
	}
	
}